1
Dalle Prompt alle Pipeline: Panoramica sull'Orchestrazione di LangChain
AI010Lesson 6
00:00

Dalle Prompt alle Pipeline

L'evoluzione dell'interazione con i modelli linguistici

Nelle lezioni precedenti ci siamo concentrati sulle interazioni con una sola prompt. Tuttavia, le applicazioni del mondo reale richiedono molto di piรน di una semplice domanda e risposta. Per creare sistemi AI scalabili, dobbiamo passare all'Orchestrazione. Questo implica collegare diverse chiamate al modello linguistico, utilizzare logiche di ramificazione basate sull'input dell'utente e consentire al modello di interagire con dati esterni.

I blocchi fondamentali dell'orchestrazione

  • LLMChain: L'unitร  fondamentale. Combina un modello di prompt con un modello linguistico.
  • Catene sequenziali: Consentono di creare un flusso di lavoro multistep in cui l'output di un passaggio diventa l'input per il successivo.
  • Catene Router: Funzionano come "regolatori del traffico", utilizzando un modello linguistico per decidere quale sotto-catena specializzata deve gestire una richiesta specifica (ad esempio, inviare una domanda di matematica a una "Catena Matematica" e una domanda di storia a una "Catena Storia").

Il principio fondamentale: la Regola della Catena

Le catene permettono di combinare piรน componenti โ€” modelli, prompt e memoria โ€” in un'unica applicazione coerente. Questa modularitร  garantisce che compiti complessi possano essere suddivisi in passaggi gestibili e debuggabili.

Suggerimento esperto: Debug delle pipeline
Quando le tue pipeline diventano complesse, usa langchain.debug = True. Questa "visione a raggi X" ti permette di vedere esattamente quali prompt vengono inviati e quali output grezzi vengono ricevuti nel retroscena in ogni fase della catena.
sequential_chain.py
TERMINALbash โ€” 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a SimpleSequentialChain and a standard SequentialChain?
SimpleSequentialChain supports multiple input variables, while SequentialChain does not.
SimpleSequentialChain only supports a single input and single output flowing between steps.
Only SequentialChain can be used with ChatOpenAI models.
Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.

Define the logic for a RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""

prompt_infos = [
    {"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
    {"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]
Step 2
Define the router_template to guide the LLM on how to classify the user's intent, and initialize the chain.
Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
    destinations=destinations_str
)
router_prompt = PromptTemplate(
    template=router_template,
    input_variables=["input"],
    output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)

chain = MultiPromptChain(
    router_chain=router_chain,
    destination_chains=destination_chains,
    default_chain=default_chain,
    verbose=True
)